//package com.t2two.myproject.common.utils;
//
///**
// * @version 1.0
// * @description: TODO
// * @author: lifei
// * @date: 2025/2/20 14:22
// */
//package com.t2two.myproject.common.utils;
//
///**
// * @version 1.0
// * @description: TODO
// * @author: lifei
// * @date: 2025/2/20 14:03
// */
//import cn.hutool.crypto.BCUtil;
//import cn.hutool.crypto.SmUtil;
//import cn.hutool.crypto.asymmetric.KeyType;
//import cn.hutool.crypto.asymmetric.SM2;
//import org.bouncycastle.crypto.engines.SM2Engine;
//import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
//import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
//
//import java.security.PrivateKey;
//import java.security.PublicKey;
//
//public class SM2Util123 {
//
//    /**
//     * SM2解密
//     * @param privateKeyHex 十六进制私钥字符串
//     * @param cipherData 加密数据（Base64或Hex字符串）
//     * @return 解密后的明文
//     */
//    public static String decrypt(String privateKeyHex, String cipherData) {
//        // 将十六进制私钥转换为BCECPrivateKey
//        PrivateKey privateKey = BCUtil.toSm2PrivateKey(privateKeyHex);
//
//        // 创建SM2对象（使用BC库实现）
//        SM2 sm2 = SmUtil.sm2();
//        sm2.setPrivateKey(privateKey);
//        sm2.setMode(SM2Engine.Mode.C1C3C2); // 根据前端加密模式设置（需与前端一致）
//
//        // 执行解密（自动识别Base64/Hex编码）
//        return sm2.decryptStr(cipherData, KeyType.PrivateKey);
//    }
//
//    /**
//     * SM2加密
//     * @param publicKeyHex 十六进制公钥字符串（04开头）
//     * @param plainText 明文数据
//     * @return Base64编码的加密数据
//     */
//    public static String encrypt(String publicKeyHex, String plainText) {
//        // 将十六进制公钥转换为BCECPublicKey
//        PublicKey publicKey = BCUtil.toSm2PublicKey(publicKeyHex);
//
//        // 创建SM2对象
//        SM2 sm2 = SmUtil.sm2(null, publicKey);
//        sm2.setMode(SM2Engine.Mode.C1C3C2); // 需与前端协商一致
//
//        // 执行加密并返回Base64
//        return sm2.encryptBase64(plainText, KeyType.PublicKey);
//    }
//
//    // 示例用法
//    public static void main(String[] args) {
//        // 您的私钥（示例）
//        String privateKey = "16cf62248840bf5d94c54502019606be14607167af43ff5d11d7b20e6407c2ff";
//
//        // 假设前端加密后的数据（示例）
//        String encryptedData = "MEQCIH5e4P..."; // 这里替换实际加密数据
//
//        // 解密操作
//        String decrypted = decrypt(privateKey, encryptedData);
//        System.out.println("解密结果: " + decrypted);
//
//        // 加密示例（需要公钥）
//        String publicKey = "04..."; // 替换为实际公钥
//        String cipher = encrypt(publicKey, "Hello World");
//        System.out.println("加密结果: " + cipher);
//    }
//}
//
